package spring3.controller;
 
//import net.viralpatel.spring3.form.Contact;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.validation.Valid;

import spring3.form.SumRes;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import webservice.Servicio_ejemploServiceStub;
import webservice.Servicio_ejemploServiceStub.Resta;
import webservice.Servicio_ejemploServiceStub.RestaResponse;
import webservice.Servicio_ejemploServiceStub.Suma;
import webservice.Servicio_ejemploServiceStub.SumaResponse;
 
@Controller
@SessionAttributes
public class ContactController {
 
    @RequestMapping(value = "/addContact", method = RequestMethod.POST)
    public ModelAndView addContact(@ModelAttribute("SumRes") @Valid  SumRes sumres, BindingResult result) {
         //BindingResult result, 
    	 if(result.hasErrors()) {
    		 System.out.println("ERROR");
             return new ModelAndView("SumRes");
         }
        System.out.println("First Name:" + sumres.getNum1() + 
                    "Last Name:" + sumres.getNum2());
        
       
        try {
        	Servicio_ejemploServiceStub oStub = new Servicio_ejemploServiceStub();
        	SumRes oSumRes = new SumRes();
        	sumres.getNum1();
        	sumres.getNum2();
        	
        	Suma oSuma = new Suma();
        	oSuma.setNum1(sumres.getNum1());
        	oSuma.setNum2(sumres.getNum2());
        	
        	Resta oResta = new Resta();
        	oResta.setNum1(sumres.getNum1());
        	oResta.setNum2(sumres.getNum2());
        	
        	SumaResponse objResponse = oStub.suma(oSuma);
    		int mensaje = objResponse.get_return();
    		
    		RestaResponse objResponse2 = oStub.resta(oResta);
    		int mensaje2 = objResponse2.get_return();

		        System.out.println(mensaje);
		        System.out.println(mensaje2);
				return new ModelAndView("saludo", "message", mensaje);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

			return new ModelAndView("error", "message", "ERROR");
		}
         
        //return "redirect:contacts.html";
        
    }
    
    @RequestMapping(value = "/addContact2", method = RequestMethod.POST)
    public ModelAndView addContact2(@ModelAttribute("SumRes") @Valid  SumRes sumres, BindingResult result) {
         //BindingResult result, 
    	 if(result.hasErrors()) {
    		 System.out.println("ERROR");
             return new ModelAndView("SumRes");
         }
        System.out.println("First Name:" + sumres.getNum1() + 
                    "Last Name:" + sumres.getNum2());
        
       
        try {
        	Servicio_ejemploServiceStub oStub = new Servicio_ejemploServiceStub();
        	SumRes oSumRes = new SumRes();
        	sumres.getNum1();
        	sumres.getNum2();

        	Resta oResta = new Resta();
        	oResta.setNum1(sumres.getNum1());
        	oResta.setNum2(sumres.getNum2());
    		
    		RestaResponse objResponse2 = oStub.resta(oResta);
    		int mensaje2 = objResponse2.get_return();

		        System.out.println(mensaje2);
				return new ModelAndView("saludo", "message", mensaje2);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

			return new ModelAndView("error", "message", "ERROR");
		}
         
        //return "redirect:contacts.html";
        
    }
     
    
    
     
    @RequestMapping("/contacts")
    public ModelAndView showContacts() {
         
        return new ModelAndView("contact", "command", new SumRes());
    }
    
    @RequestMapping("/contacts2")
    public ModelAndView showContacts2() {
         
        return new ModelAndView("contact2", "command", new SumRes());
    }
    
 

}